package code.whmmm.util.simple.calculate;

import code.whmmm.util.simple.ValueWrapper;

/**
 * <p><b>
 * 计算工具类
 * </b></p>
 * <br/>
 * 创建时间: 2019/11/22 8:29
 *
 * @author Zero
 */
public class IntCalc implements CalcInterface {

    private Integer result;

    /**
     * 创建 初始值 为 0 的 IntCalc 对象。
     *
     * @return
     */
    public static IntCalc create() {
        return new IntCalc(0);
    }

    /**
     * 创建 IntCalc
     *
     * @param initValue
     * @return
     */
    public static IntCalc create(Object initValue) {
        return new IntCalc(initValue);
    }

    /**
     * 初始值 0
     */
    public IntCalc() {
        this(0);
    }

    /**
     * 设置 初始值，实例化对象
     *
     * @param initValue
     */
    public IntCalc(Object initValue) {
        result = ValueWrapper.getInt(initValue);
    }


    public IntCalc add(Object... num) {
        for (Object o : num) {
            result += ValueWrapper.getInt(o);
        }
        return this;
    }

    public IntCalc minus(Object... num) {
        for (Object o : num) {
            result -= ValueWrapper.getInt(o);
        }
        return this;
    }

    public IntCalc multi(Object... num) {
        for (Object o : num) {
            result *= ValueWrapper.getInt(o);
        }
        return this;
    }

    public IntCalc divide(Object... num) {
        for (Object o : num) {
            if (o == null) {
                o = 1;
            }

            result /= ValueWrapper.getInt(o);
        }
        return this;
    }

    /**
     * 获取 int 类型结果
     *
     * @return
     */
    public int get() {
        return result;
    }

}
